#include "widget.h"

#include <QApplication>
//QTreeWidget树形控件
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}
/*
 * QTreeWidget树形控件
 * QTreeWidget树形控件里面的元素都是QTreeWidgetItem类型。
 * 每个QTreeWidgetItem元素节点都可以包含多个文本或图标，每一个文本/图标为一个列
 * 可以给QTreeWidget树形控件设置顶层节点，顶层节点可以有多个，然后再给顶层节点添加子节点，从而构成树形结构
 * QTreeWidget这个树形结构的控件，没有体现出根节点，是从根节点的下一层子节点开始计算的，所以，就称为顶层节点，顶层节点也就可以有多个
 * 针对顶层节点来说，这里也类似于list数据结构
 *
 * QTreeWidget树形结构的树有点特殊，是一颗多叉树，但是没有根节点，将第一层节点成为顶层节点，所以顶层节点可以有多个
 *
 * QTreeWidget树形结构方法
 * clear()：清空所有子节点
 * addTopLevelItem(QTreeWidgetItem *item)：新增顶层节点
 * topLevelItem(int index)：获取指定下标的顶层节点
 * topLevelItemCount()：获取顶层节点个数
 * indexOfToLevelItem(QTreeWidgetItem* item)：查询指定顶层节点的下标
 * takeTopLevelItem(int index)：删除指定的顶层节点。返回QTreeWidgetItem *指针对象，表示被删除的元素
 * currentItem()：获取到当前选中的节点。返回QTreeWidgetItem *指针对象
 * setCurrentItem(QTreeWidgetItem *item)：选中指定节点
 * setExpanded(bool)：展开/关闭节点。
 *      即需不需要将此节点后面的子节点展示出来。
 * setHeaderLabel(const QString &text)：设置TreeWidget的header名称
 *
 * QTreeWidget信号
 * currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *old)：选中的节点发生改变时触发
 *      current：旧选中的节点的指针对象  old：新选中(当前选中)节点的指针对象
 * itemClicked(QTreeWidgetItem *item, int col)：单击节点时触发
 * itemDoubleClicked(QTreeWidgetItem *item, int col)：双击节点时触发
 * itemEntered(QTreeWidgetItem *item, int col)：鼠标进入时触发
 * itemExpanded(QTreeWidgetItem *item)：节点元素被展开时触发
 * itemCollapsend(QTreeWidgetItem *item)：节点元素被折叠时触发
 *
 * QTreeWidgetItem属性
 * text属性：持有的文本
 * textAlignment属性：文本对齐方式
 * icon属性：持有的图标
 * font属性：文本字体
 * hidden属性：是否隐藏
 * disabled属性：是否禁用
 * expand属性：是否展开
 * sizeHint属性：尺寸大小
 * selected属性：是否选中
 *
 * QTreeWidgetItem方法
 * addChild(QTreeWidget *child)：新增子节点
 * childCount()：子节点个数
 * child(int index)：获取指定index下标的子节点。返回QTreeWidgetItem *指针对象
 * takeChild(int index)：删除对应下标的子节点
 * removeChild(QTreeWidgetItem *child)：删除对应内容信息的子节点
 * parent()：获取该节点元素的父节点
 *
*/
